sclang: array primitives - respect mutability when changing object.
[supercollider.git] / examples / research_and_tools / ShepardTones SignalBuf.scd
blobaaca3ffe47e3fad806d93dc4455580f232e56c63
3 // shepard tones
4 // alberto de campo
6 var ampTable, freqTable, b1, b2;
8 ampTable = Signal.hanningWindow(1024).squared;
9 freqTable = Signal.newClear(1024).waveFill({ arg i; 0.5 ** i * 20000 }, 0, 10);
11 b1 = Buffer.loadCollection(s, freqTable);
12 b2 = Buffer.loadCollection(s, ampTable);
15         var freqs, amps, phasor, ratescale, rate, phases;
16         ratescale = 1024 / 44100 / 10;
17         rate = 0.1;     // once per 10 sec
18         phasor = Phasor.ar(0, rate * ratescale, 0, 1024);
19         phases = (0..9) * 0.1 * 1024 + phasor;
21         freqs = BufRd.ar(1, b1.bufnum, phases);
22         amps = BufRd.ar(1, b2.bufnum, phases);
24         Mix.ar(SinOsc.ar(freqs) * amps) * 0.1;
25 }.play;